let ErrorUtils = require('../utils/error/ErrorUtils');
let UserService = require('../service/user');
let ResponseUtils = require('../utils/ResponseUtils');
const {infoLogger, errorLogger} = require('../config').logger;

class UserController {
    /**
     * 获取用户信息
     * @returns {Promise<void>}
     */
    static async index(ctx) {
        let id = ctx.params.id;
        let result = await UserService.index(id);
        ctx.body = ResponseUtils.builder(result).success().build();
    }

    /**
     * 获取用户列表
     * @returns {Promise<void>}
     */
    static async list(ctx) {
        infoLogger.info(">>>>>>获取用户列表接口开始");
        let result = await UserService.list();
        ctx.body = ResponseUtils.builder(result).success().build();
    }

    /**
     * 创建用户
     * @param ctx
     * @returns {Promise<void>}
     */
    static async create(ctx) {
        //infoLogger.info(">>>>>>获取用户名信息接口开始,请求参数",ctx);
        let data = ctx.request.body;
        infoLogger.info(">>>>>>获取用户名信息接口开始,请求参数", data);
        let result = await UserService.create(ctx.request.body);
        ctx.body = ResponseUtils.builder(result).success().build();
    }

    /**
     * 修改用户
     * @param ctx
     * @returns {Promise<void>}
     */
    static async update(ctx) {
        let data = ctx.request.body;
        infoLogger.info(">>>>>>获取用户名信息接口开始,请求参数", data);
        let result = await UserService.update(data);
        ctx.body = ResponseUtils.builder(result).success().build();
    }

    /**
     * 删除用户
     * @param ctx
     * @returns {Promise<void>}
     */
    static async delete(ctx) {
        let {id} = ctx.request.body;
        infoLogger.info(">>>>>>获取用户名信息接口开始,请求参数", id);
        let result = await UserService.delete(id);
        ctx.body = ResponseUtils.builder(result).success().build();
    }

    /**
     * 解密用户信息
     * @param ctx
     * @returns {Promise<void>}
     */
    static async wechatDecryptUserData(ctx) {
        let result = await UserService.wechatDecryptUserData(ctx.currentUser,  ctx.request.body);
        ctx.body = ResponseUtils.builder(result).success().build();
    }
}

module.exports = UserController;
